1 import turtle
2 import time
3 import random
4
5
6 delay = 0.1
7 queue =[]
8
9 pen = turtle.Turtle()
10 pen.shape('square')
11 pen.penup()
12 pen.speed(0)
13 pen.color('White')
14
15 pen.hideturtle()
16 pen.goto(-290,210)
17 pen.write("Score: 0 " ,font=('Arial',25,'bold'))
18
19
20 window = turtle.Screen()
21 window.bgcolor('Black')
22 window.title('Snake Game')
23 window.setup(width=600,height=500)
24 window.tracer(0)
25
26
27 Snake_Head = turtle.Turtle()
28 Snake_Head.speed(0)
29 Snake_Head.shape('circle')
30 Snake_Head.color('white')
31 Snake_Head.penup()
32 Snake_Head.goto(0,0)
33 Snake_Head.direction ='stop'
34
35
36 Snake_Food = turtle.Turtle()
37 Snake_Food.speed(0)
38 Snake_Food.shape('circle')
39
40 Snake_Food.color('red')
41 Snake_Food.penup()
42 Snake_Food.goto(0,150)
43
44
45
46 def Move_Snake():
47 if Snake_Head.direction == 'up':
48 y = Snake_Head.ycor()
49 Snake_Head.sety(y + 10)
50 if Snake_Head.direction == 'down':
51 y = Snake_Head.ycor()
52 Snake_Head.sety(y - 10)
53 if Snake_Head.direction == 'left':
54 x = Snake_Head.xcor()
55 Snake_Head.setx(x - 10)
56 if Snake_Head.direction == 'right':
57 x = Snake_Head.xcor()
58 Snake_Head.setx(x + 10)
59
60
61 def go_up():
62 Snake_Head.direction = 'up'
63
64
65 def go_down():
66 Snake_Head.direction = 'down'
67
68
69 def go_left():
70 Snake_Head.direction = 'left'
71
72
73 def go_right():
74 Snake_Head.direction = 'right'
75
76
77 def Food_Collision():
78 if Snake_Head.distance(
79 Snake_Food) < 15:
80 Snake_Food.goto(random.randint(-290, 290), random.randint(-249, 249))
81 Snake_body = turtle.Turtle()
82 Snake_body.speed(0)
83 Snake_body.shape('circle')
84 Snake_body.color('white')
85 Snake_body.penup()
86 queue.append(Snake_body)
87 return True
88 return False
89
90
91 def Border_Collision():
92 if Snake_Head.xcor() > 290 or Snake_Head.xcor() < -290 or Snake_Head.ycor() > 249 or Snake_Head.ycor() < -249:
93 time.sleep(1)
94 Snake_Head.goto(0, 0)
95 Snake_Head.direction = 'stop'
96 for segment in queue:
97 segment.goto(1000, 1000)
98 queue.clear()
99 return True
100
101 return False
102 def Body_Collision():
103 for segment in queue:
104 if segment.distance(Snake_Head) < 10:
105 time.sleep(1)
106 Snake_Head.goto(0, 0)
107 Snake_Head.direction = 'stop'
108 for segment in queue:
109 segment.goto(1000, 1000)
110 queue.clear()
111 return True
112 return False
113
114
115 def Add_Snake_Body():
116 for i in range(len(queue) - 1, 0, -1):
117 if i % 5 == 0:
118 queue[i].goto(queue[i - 1].xcor(), queue[i - 1].ycor())
119 queue[i].color('red')
120 continue
121 queue[i].goto(queue[i - 1].xcor(), queue[i - 1].ycor())
122 if len(queue) > 0:
123 queue[0].goto(Snake_Head.xcor(), Snake_Head.ycor())
124
125
126
127 window.listen()
128 window.onkeypress(go_up, 'Up')
129 window.onkeypress(go_down, 'Down')
130 window.onkeypress(go_left, 'Left')
131 window.onkeypress(go_right, 'Right')
132
133
134 score = 0
135 while True:
136
137 window.update()
138 Move_Snake()
139 if Food_Collision():
140 score += 10
141 pen.clear()
142 pen.write('Score:{}'.format(score), font=('Arial', 25, 'bold'))
143
144 if Body_Collision() or Border_Collision():
145 score = 0
146 pen.clear()
147 pen.write('Score:{}'.format(score), font=('Arial', 25, 'bold'))
148 time.sleep(delay)
149 Add_Snake_Body()
150
151 window.mainloop()